package list.simple;

import list.ListNode;

/**
 * 链表的中间结点
 * 输入：[1,2,3,4,5,6]
 * 输出：此列表中的结点 4 (序列化形式：[4,5,6])
 * 由于该列表有两个中间结点，值分别为 3 和 4，我们返回第二个结点。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/middle-of-the-linked-list
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class MiddleOfTheLinkedList_876 {
    public ListNode middleNode(ListNode head) {
        int sum = 0;
        ListNode current = head;
        while(current != null) {
            current = current.next;
            sum++;
        }
        int mid = sum / 2;
        ListNode dummy = head;
        while(mid-- > 0) {
            dummy = dummy.next;
        }
        return dummy;
    }
}
